/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DAO.util.ConectaBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.Classificacao;

/**
 *
 * @author Alex
 */
public class ClassificacaoDAO {

    public boolean criar(Classificacao classificacao) {
        try {

            Connection conexao = ConectaBanco.getConexao();

            String sql = "insert into classificacao(  id_time,jogo1,jogo2,criterio1,criterio2,criterio3,criterio4"
                    + "pontos_conquistados,pontos_sofridos,saldo,innings_fechados,innings_ataque,innings_defesa"
                    + ")values (?,?,?,?,?,?,?,?,?,?,?,?,?)";

            PreparedStatement pstmt = conexao.prepareStatement(sql);

     
            pstmt.setInt(1, classificacao.getTime().getId_time());
            pstmt.setFloat(2, classificacao.getJogo1());
            pstmt.setFloat(3, classificacao.getJogo2());
            pstmt.setFloat(4, classificacao.getCriterio1());
            pstmt.setFloat(5, classificacao.getCriterio2());
            pstmt.setFloat(6, classificacao.getCriterio3());
            pstmt.setFloat(7, classificacao.getCriterio4());
            pstmt.setFloat(8, classificacao.getPontosConquistados());
            pstmt.setFloat(9, classificacao.getPontosSofridos());
            pstmt.setFloat(10, classificacao.getSaldo());
            pstmt.setFloat(11, classificacao.getInningsFechados());
            pstmt.setFloat(12, classificacao.getInningsAtaque());
            pstmt.setFloat(13, classificacao.getInningsDefesa());

            pstmt.execute();
            conexao.close();

            return true;

        } catch (SQLException sql) {
            sql.printStackTrace();
            return false;

        }

    }

    public ArrayList<Classificacao> buscarClassificacoes() {
        ArrayList<Classificacao> classificacoes = new ArrayList<Classificacao>();
        Connection conexao = null;
        try {
            conexao = ConectaBanco.getConexao();
            String sql = "select * from classificacao";

            PreparedStatement pst = conexao.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();
            TimeDAO timeDAO = new TimeDAO();

            while (rs.next()) {
                Classificacao classificacao = new Classificacao();

                classificacao.setId(rs.getInt("id"));
                classificacao.setTime(timeDAO.buscarPorId(rs.getInt("id_time")));
                classificacao.setJogo1(rs.getFloat("jogo1"));
                classificacao.setJogo2(rs.getFloat("jogo2"));
                classificacao.setCriterio1(rs.getFloat("criterio1"));
                classificacao.setCriterio2(rs.getFloat("criterio2"));
                classificacao.setCriterio3(rs.getFloat("criterio3"));
                classificacao.setCriterio4(rs.getFloat("criterio4"));
                classificacao.setPontosConquistados(rs.getFloat("pontos_conquistados"));
                classificacao.setPontosSofridos(rs.getFloat("pontos_sofridos"));
                classificacao.setSaldo(rs.getFloat("saldo"));
                classificacao.setInningsFechados(rs.getFloat("innings_fechados"));
                classificacao.setInningsAtaque(rs.getFloat("innings_ataque"));
                classificacao.setInningsDefesa(rs.getFloat("innings_defesa"));

                classificacoes.add(classificacao);
            }

            conexao.close();
            return classificacoes;

        } catch (Exception sql) {
            System.out.println("Erro ao buscar um aluno" + sql.getMessage());
            return null;
        }

    }

    public Classificacao buscarPorTime(int idTime) {

        Connection conexao = null;
        try {
            conexao = ConectaBanco.getConexao();
            String sql = "select * from classificacao where id_time= ?";

            PreparedStatement pst = conexao.prepareStatement(sql);

            pst.setInt(1, idTime);
            ResultSet rs = pst.executeQuery();
            TimeDAO timeDAO = new TimeDAO();

            rs.next();
            Classificacao classificacao = new Classificacao();

            classificacao.setId(rs.getInt("id"));
            classificacao.setTime(timeDAO.buscarPorId(rs.getInt("id_time")));
            classificacao.setJogo1(rs.getFloat("jogo1"));
            classificacao.setJogo2(rs.getFloat("jogo2"));
            classificacao.setCriterio1(rs.getFloat("criterio1"));
            classificacao.setCriterio2(rs.getFloat("criterio2"));
            classificacao.setCriterio3(rs.getFloat("criterio3"));
            classificacao.setCriterio4(rs.getFloat("criterio4"));
            classificacao.setPontosConquistados(rs.getFloat("pontos_conquistados"));
            classificacao.setPontosSofridos(rs.getFloat("pontos_sofridos"));
            classificacao.setSaldo(rs.getFloat("saldo"));
            classificacao.setInningsFechados(rs.getFloat("innings_fechados"));
            classificacao.setInningsAtaque(rs.getFloat("innings_ataque"));
            classificacao.setInningsDefesa(rs.getFloat("innings_defesa"));

            conexao.close();
            return classificacao;

        } catch (Exception sql) {
            System.out.println("Erro ao buscar um aluno" + sql.getMessage());
            return null;
        }

    }
    
        public boolean atualizar(Classificacao classificacao) {
        try {

            Connection conexao = ConectaBanco.getConexao();
            String sql = "update classificacao set  jogo1=?,jogo2=?,criterio1=?,criterio2=?,criterio3=?,criterio4=?,"
                    + "pontos_conquistados=?,pontos_sofridos=?,saldo=?,innings_fechados=?,innings_ataque=?"
                    + ",innings_defesa=?  where id_time=?";
            PreparedStatement pstmt = conexao.prepareStatement(sql);


            pstmt.setFloat(1, classificacao.getJogo1());
            pstmt.setFloat(2, classificacao.getJogo2());
            pstmt.setFloat(3, classificacao.getCriterio1());
            pstmt.setFloat(4, classificacao.getCriterio2());
            pstmt.setFloat(5, classificacao.getCriterio3());
            pstmt.setFloat(6, classificacao.getCriterio4());
            pstmt.setFloat(7, classificacao.getPontosConquistados());
            pstmt.setFloat(8, classificacao.getPontosSofridos());
            pstmt.setFloat(9, classificacao.getSaldo());
            pstmt.setFloat(10, classificacao.getInningsFechados());
            pstmt.setFloat(11, classificacao.getInningsAtaque());
            pstmt.setFloat(12, classificacao.getInningsDefesa());

            pstmt.execute();
            conexao.close();

            return true;
        } catch (SQLException sql) {
            return false;

        }
    }

}
